package com.tbit.uqbike.webmanager.dao.core;

import com.tbit.uqbike.object.pojo.BmsBattery;
import com.tbit.uqbike.object.pojo.dto.BmsBatteryQueryDTO;
import com.tbit.uqbike.object.pojo.vo.BmsBatteryVO;
import com.tbit.uqbike.object.pojo.vo.BmsConfigVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Author:BUGTian
 * @DATE: 2022/7/13
 */
public interface BmsDao {

    /**
     * 云bms授权数量查询
     *
     * @param accountId 品牌id
     * @return
     */
    BmsConfigVO queryBmsConfig(@Param("accountId") Integer accountId);

    /**
     * 查询使用次批次的电池数量
     *
     * @param batch
     * @return
     */
    int selectCountByBatch(@Param("batch") Integer batch);

    /**
     * 查询电池信息并补充入库数据
     *
     * @param accountId
     * @param adAccountId
     * @param batteryNOList
     * @param batch
     * @return
     */
    List<BmsBattery> queryBmsBatteryListByBattery(@Param("accountId") Integer accountId, @Param("adAccountId") Integer adAccountId, @Param("batteryNOList") List<String> batteryNOList, @Param("batch") Integer batch);

    /**
     * 添加bms电池
     *
     * @param bmsBattery
     * @return
     */
    int insertBmsBattery(BmsBattery bmsBattery);

    /**
     * 根据电池编号查询该电池是否已存在bms电池表里
     *
     * @param batteryNO
     * @return
     */
    int queryBmsBatteryCountByNo(@Param("batteryNO") String batteryNO);

    /**
     * 条件查询bms电池信息
     *
     * @param bmsBatteryQueryDTO
     * @return
     */
    List<BmsBatteryVO> queryBmsBatteryList(BmsBatteryQueryDTO bmsBatteryQueryDTO);

    /**
     * 批量删除bms电池
     *
     * @param bmsBatteryNoList
     */
    void deleteBmsBattery(@Param("bmsBatteryNoList") List<String> bmsBatteryNoList);


    /**
     * 根据品牌和区域查询电池编号
     *
     * @param accountId
     * @param adAccountId
     * @return
     */
    List<String> queryBmsBatteryNo(@Param("accountId") Integer accountId, @Param("adAccountId") Integer adAccountId);


    /**
     * 批量修改云bms电池的批次
     *
     * @param adAccountId
     * @param batch
     * @param batteryNO
     * @return
     */
    int updateBmsBattery(@Param("adAccountId") Integer adAccountId, @Param("batch") Integer batch, @Param("batteryNO") String batteryNO);


    /**
     * 修改云bms电池异常状态
     *
     * @param batteryNO    电池编号
     * @param abnormalType 状态
     */
    void updateBmsBatteryAbnormalType(@Param("batteryNO") String batteryNO, @Param("abnormalType") Integer abnormalType);

    /**
     * 查询云bms电池表里存在的云bms电池编号
     *
     * @param bmsBatteryNoList
     * @return
     */
    List<String> queryInDbBmsBatteryNo(@Param("bmsBatteryNoList") List<String> bmsBatteryNoList);
}
